package com.ip.user.models.service;

import com.ip.user.models.bo.UserBO;
import com.ip.user.models.vo.UserVO;

import java.util.List;

/**
 * 用户服务接口
 */
public interface UserService {
    
    /**
     * 创建用户
     * @param userBO 用户BO对象
     * @return 用户VO对象
     */
    UserVO createUser(UserBO userBO);
    
    /**
     * 根据ID获取用户
     * @param userId 用户ID
     * @return 用户VO对象
     */
    UserVO getUserById(Long userId);
    
    /**
     * 根据用户名获取用户
     * @param username 用户名
     * @return 用户VO对象
     */
    UserVO getUserByUsername(String username);
    
    /**
     * 获取所有用户
     * @return 用户VO列表
     */
    List<UserVO> getAllUsers();
    
    /**
     * 分页获取用户列表
     * @param pageNo 页码
     * @param pageSize 每页大小
     * @param username 用户名（可选）
     * @param status 状态（可选）
     * @return 用户VO列表
     */
    List<UserVO> getUsersByPage(int pageNo, int pageSize, String username, Integer status);
    
    /**
     * 获取用户总数
     * @param username 用户名（可选）
     * @param status 状态（可选）
     * @return 用户总数
     */
    int getUserCount(String username, Integer status);
    
    /**
     * 更新用户信息
     * @param userBO 用户BO对象
     * @return 用户VO对象
     */
    UserVO updateUser(UserBO userBO);
    
    /**
     * 更新用户状态
     * @param userId 用户ID
     * @param status 用户状态
     */
    void updateUserStatus(Long userId, Integer status);
    
    /**
     * 删除用户
     * @param id 用户ID
     */
    void deleteUser(Long id);
}